#pragma once

#include <libtcod\libtcod.hpp>
#include <string>
#include <memory>
#include <vector>

typedef std::shared_ptr<TCODParser> TCODParserPtr;

namespace World
{
	//Forward declaration
	class WorldSpace;
	typedef std::shared_ptr<WorldSpace> WorldSpacePtr;

	class TheWorld
	{
	public:
		TheWorld();
		~TheWorld();

		const WorldSpacePtr &getRoot() const { return worldSpaces[0]; }

		void generate(const std::string &path);

		void render();

	private:
		std::vector<WorldSpacePtr> worldSpaces;
		TCODParserPtr cfg_parser;
	};
}
